package com.fz.us.admin.company.bean;

/**
 * Created by ZhuChunXiao on 2017/5/26.
 */
public class EnumManage {

    public enum DutyState {
        /***/
        Default {public String getName(){return "组员";}},
        /**  */
        Principal {public String getName(){return "负责人";}},
        /**  */
        Deputy  {public String getName(){return "副职";}};
        public abstract String getName();
    }

    /**
     * 坐标类型
     * bd09 百度墨卡托坐标系
     * bd09ll 百度经纬度坐标系（百度地图）
     * gcj02 中国国家测绘局坐标系
     */
    public static enum CoordTypeEnum {
        /**
         * 百度墨卡托坐标系
         */
        bd09("百度墨卡托坐标系" , 1),

        /**
         * 百度经纬度坐标系（百度地图）
         */
        bd09ll("百度经纬度坐标系" , 2),

        /**
         * 中国国家测绘局
         */
        gcj02("中国国家测绘局" , 3),
        /**
         * 国际坐标系
         */
        wgs84("国际坐标系" , 4);

        private final String value;
        private final int key;

        private CoordTypeEnum(final String value, final int key) {
            this.value = value;
            this.key = key;
        }
        public String value() {
            return this.value;
        }
        public int key() {
            return this.key;
        }
    }

    /**
     * 动态类别
     */
    public static enum ActiveTypeEnum {
        /**
         * 系统消息
         */
        AdminMsg("系统消息" , 101),

        /**
         * 企业消息
         */
        CompanyMsg("企业消息" , 102),

        /**
         * 用户消息
         */
        UserMsg("用户消息" , 102),

        /**
         * 履历
         */
        Resume("履历" , 201),

        /**
         * 批注
         */
        Comment("批注" , 301),

        /**
         * 提醒
         */
        Remind("提醒" , 401),

        /**
         * 审批
         */
        Approval("审批" , 501);

        private final String value;
        private final int key;

        private ActiveTypeEnum(final String value, final int key) {
            this.value = value;
            this.key = key;
        }
        public String value() {
            return this.value;
        }
        public int key() {
            return this.key;
        }
    }

    /**
     * 动态类型
     */
    public static enum ActiveModelEnum {
        /**
         * 普通（仅显示）
         */
        Normal("普通" , 0),

        /**
         * 消息（显示+推送）
         */
        Message("消息" , 1),

        /**
         * 推送（仅推送）
         */
        Push("推送" , 2);

        private final String value;
        private final int key;

        private ActiveModelEnum(final String value, final int key) {
            this.value = value;
            this.key = key;
        }
        public String value() {
            return this.value;
        }
        public int key() {
            return this.key;
        }
    }

    /**
     * 批注类型
     * */
    public static enum CommentModelEnum{
        /**
         * 文本
         */
        text("文本", 0),
        /**
         * 图片
         */
        image("图片", 1),
        /**
         * 语音
         */
        voice("语音", 2),
        /**
         * 视频
         */
        video("视频", 3),
        /**
         * 地理位置
         */
        location("地理位置", 4),
        /**
         * 链接
         */
        link("链接", 5),
        /**
         * 其他文件，打开时用文件表示
         */
        file("其他文件", 6);

        private final String value;
        private final int key;

        private CommentModelEnum(final String value, final int key) {
            this.value = value;
            this.key = key;
        }
        public String value() {
            return this.value;
        }
        public int key() {
            return this.key;
        }
    }

    /**
     * 推送目标
     */
    public static enum PushTargetEnum {

        /**
         * SmartSales
         */
        SmartSales("SmartSales" , 1),
        Cst("Cst" , 2);

        private final String value;
        private final int key;

        private PushTargetEnum(final String value, final int key) {
            this.value = value;
            this.key = key;
        }
        public String value() {
            return this.value;
        }
        public int key() {
            return this.key;
        }
    }

    /**
     * 推送类别
     */
    public static enum PushWayEnum {
        /**
         * 通知
         */
        Notification("通知" , 1),

        /**
         * 自定义消息
         */
        CustomMessage("自定义消息" , 2);

        private final String value;
        private final int key;

        private PushWayEnum(final String value, final int key) {
            this.value = value;
            this.key = key;
        }
        public String value() {
            return this.value;
        }
        public int key() {
            return this.key;
        }
    }

    /**
     * 推送方式
     */
    public static enum PushTypeEnum {
        /**
         * 通过key（发送给所有用户）
         */
        ApplicationKey("通过key" , 1),

        /**
         * 通过IMEI（已过时）
         */
        IMEI("通过IMEI（已过时）" , 2),

        /**
         * 通过标识
         */
        Alias("通过标识", 3),

        /**
         * 通过特征（or关系）
         */
        Tag("通过特征（or关系）" , 4),

        /**
         * 通过特征（and关系）
         */
        Tag_And("通过特征（and关系）", 5),

        /**
         * 注册ID
         */
        Registration_Id("注册ID", 6);

        private final String value;
        private final int key;

        private PushTypeEnum(final String value, final int key) {
            this.value = value;
            this.key = key;
        }
        public String value() {
            return this.value;
        }
        public int key() {
            return this.key;
        }
    }

    /**
     * 自定义消息级别
     */
    public static enum CustomMessageLevelEnum {
        /**
         * 消息
         */
        Normal("普通消息" , 0),

        /**
         * 提醒
         */
        Notice("提醒" , 1),

        /**
         * 代办
         */
        Todo("代办" , 2);

        private final String value;
        private final int key;

        private CustomMessageLevelEnum(final String value, final int key) {
            this.value = value;
            this.key = key;
        }
        public String value() {
            return this.value;
        }
        public int key() {
            return this.key;
        }
    }

    /**
     * 自定义消息类型
     */
    public static enum CustomMessageTypeEnum {
        /**
         * 系统消息
         */
        AdminMsg("系统消息" , 101),

        /**
         * 用户消息
         */
        UserMsg("用户消息" , 102),

        /**
         * 业务畅聊室
         */
        Community("业务畅聊室" , 103),

        /**
         * 表单阅读
         */
        FormRead("表单阅读" , 201),

        /**
         * 网页链接
         */
        WebView("网页链接" , 301),

        /**
         * 通知更新
         */
        NewCount("通知更新" , 401);

        private final String value;
        private final int key;

        private CustomMessageTypeEnum(final String value, final int key) {
            this.value = value;
            this.key = key;
        }
        public String value() {
            return this.value;
        }
        public int key() {
            return this.key;
        }
    }


    public enum NotifyKeyEnum{
        pushLog ("推送消息",1),
        sms ("短信消息",2),
        email("邮件消息",3),
        apiRequest("通知接口消息",4),
        wxMpCustomMessage("微信客服消息",5),
        locationEntity("位置信息",6),
        log("请求日志",7),
        resume("业务履历",8),
        downloadRecord("数据导出",9);

        private final String value;
        private final int key;

        private NotifyKeyEnum(final String value, final int key) {
            this.value = value;
            this.key = key;
        }
        public String value() {
            return this.value;
        }
        public int key() {
            return this.key;
        }
    }

    /**
     * 定义账号类型，通过类型来进行匹配和查找
     */
    public static enum AccountEnum {

        USERNAME("用户名"),
        MAIL("邮箱"),
        MOBILE("手机号"),
        WEIXIN("微信"),

        UNKNOW("未知");

        private final String value;

        private AccountEnum(final String value) {
            this.value = value;
        }

        public String value() {
            return this.value;
        }

    }

    /**
     * 账号类型
     */
    public enum AccountTypeEnum{

        Manager("企业管理员",1),
        User("企业普通用户",2);

        private final String value;
        private final int key;

        AccountTypeEnum(final String value, final int key) {
            this.value = value;
            this.key = key;
        }
        public String value() {
            return this.value;
        }
        public int key() {
            return this.key;
        }

    }

    public enum AuthCodeEnum {
        passwordForget ("忘记密码",1),
        register ("注册",2);

        private final String value;
        private final int key;

        private AuthCodeEnum(final String value, final int key) {
            this.value = value;
            this.key = key;
        }
        public String value() {
            return this.value;
        }
        public int key() {
            return this.key;
        }
    }
}
